package com.tilas.controller;


import com.tilas.pojo.Dept;
import com.tilas.pojo.Result;
import com.tilas.service.DepService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Insert;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@Slf4j
@RestController
public class DepController {

    @Autowired
    private DepService depService;


    /**
     * 查询所有部门信息
     *
     * */

    //@RequestMapping(value = "/depts)",method = RequestMethod.GET)
    @GetMapping("/depts")
    public Result list() {
        log.info("查询所有部门数据");
        //System.out.println("查询所有部门数据");
        List<Dept> deptList = depService.findAll();
        return Result.success(deptList);
    }



    /**
     * 删除部门信息 - 方法一：HttpServletRequest 获取请求参数
     *
     * */

//    @DeleteMapping("/depts")
//    public Result delete(HttpServletRequest request) {
//        String idStr = request.getParameter("id");
//        int id = Integer.parseInt(idStr);
//        System.out.println("根据id删除部门："+id);
//        return Result.success();
//
//    }


    /**
     * 删除部门信息 - 方法二：@RequestParam请求参数绑给方法参数
     * */


//    @DeleteMapping("/depts")
//    public Result delete(@RequestParam(value = "id",required = false) Integer deptid) {
//        System.out.println("根据id删除部门："+deptid);
//        return Result.success();
//    }


    /**
     * 删除部门信息 - 方法三：省略@RequestParam（前端传递的请求参数名和服务器端形参名一样）
     * */

    @DeleteMapping("/depts")
    public Result delete(Integer id) {
        log.info("根据id删除部门：{}",id);
     //   System.out.println("根据id删除部门："+id);
        depService.deleteById(id);
        return Result.success();
    }



    /**
     * 新增部门
     * */

    @PostMapping(value = "/depts")
    //@RequestBody 将一个json格式的请求参数直接封装到对象中
    public Result add(@RequestBody Dept dept) {
        log.info("新增部门："+dept);;
   //     System.out.println("新增部门："+dept);
        depService.add(dept);
        return Result.success();
    }


    /**
     * 根据id查询单个信息
     * */
    @GetMapping("/depts/{id}")
    public Result findById(@PathVariable Integer id) {
        log.info("查询的的部门为:{}",id);
    //    System.out.println("查询的的部门为:"+id);
        Dept dept = depService.findOne(id);
        return Result.success(dept);
    }

    /**
     * 根据id更新个人字段
     * */
    @PutMapping("/depts")
    public Result update(@RequestBody Dept dept) {
        log.info("更新的部门为：{}",dept);
    //    System.out.println("更新的部门为："+dept);
        depService.upDate(dept);
        return Result.success(dept);
    }

}
